package org.dromara.easytl.ast;

/**
 * 表达式节点
 * 表示模板中嵌入的表达式，例如：{user.name} 或 {{user.age}}
 * 
 * @author EasyTL Team
 */
public class ExpressionNode extends ASTNode {
    
    /** 表达式AST */
    private final ASTNode expression;
    
    /**
     * 构造表达式节点
     * 
     * @param expression 表达式AST
     */
    public ExpressionNode(ASTNode expression) {
        this.expression = expression;
    }
    
    /**
     * 获取表达式AST
     * 
     * @return 表达式AST
     */
    public ASTNode getExpression() {
        return expression;
    }
    
    @Override
    public <T> T accept(ASTVisitor<T> visitor) {
        return visitor.visitExpressionNode(this);
    }
    
    @Override
    public String toString() {
        return "ExpressionNode{" + "expression=" + expression + '}';
    }
}

